package util;

import entity.character;
import entity.ground;
import entity.house;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;

public class gameUtil {

    public static void setPriority(List<character> gamecharacter, int[] order,int characterNum) {
//玩家的集合 gamecharacter 和 玩家人数characterNum
//order为随机出来的顺序 而此为优先级
//使得集合中玩家的优先级依次为order的值
// //负责人：螃蟹柒
        for (int i = 0; i < characterNum;i++){
            order[i] = i + 1;
        }
//把总玩家数从1到characterNum放入数组中

        Random rand = new Random();
        for (int i = order.length-1; i > 0; i--) {
// 生成一个0到i（包含）之间的随机索引
            int j = rand.nextInt(i + 1);
// 交换arr[i]和arr[j]
            int temp = order[i];
            order[i] = order[j];
            order[j] = temp;
        }
// for (int i = 0; i < order.length; i++) {
// System.out.println(order[i]);
// }
//随机打乱数组order中的顺序


// 将游戏角色添加到映射中
        int[] priority = {};
        for (int i = 0; i < order.length; i++) {
            if (order[i] > 0 && order[i] < gamecharacter.size()) {
                gamecharacter.get(i).setPriority(order[i]);
            }
        }
//使order的值与Priority对应





//测试
// for (character character : gamecharacter) {
// System.out.println(character);
// }





    }

//测试
// public static void main(String[] args) {
//
// List<character> list1 = new ArrayList<>();
// list1.add(new character("a"));
// list1.add(new character("b"));
// list1.add(new character("c"));
// list1.add(new character("d"));
//
//
// int[] arr = {1,2,3,4};
// setPriority(list1,arr,4);
// orderCharacter(list1);
//
//
// }


    //在这里通过得知的优先级，使得有玩家的集合，集合中的顺序由优先级的大小从大到小排列
//负责人：螃蟹柒
    public static void orderCharacter(List<character> gamecharacter) {
        Collections.sort(gamecharacter, new Comparator<character>() {
            @Override
            public int compare(character c1, character c2) {
// 从大到小排序
                return Integer.compare(c2.getPriority(), c1.getPriority());
            }
        });
    }



    //在这里执行玩家的淘汰操作
//使得对应的玩家在集合 列表中移除
//num:为玩家在集合中的次序
//更改队列的次序，在这个位置
//0，1，2，3 2这个位置的玩家淘汰，则队列修改为
//0，1，3
//负责人：螃蟹柒
    public static void outCharacter(List<character> gamecharacter,int num,queueUtil queue){
        queue = new queueUtil(gamecharacter.size());
        for (int i = 0; i < gamecharacter.size(); i++) {
            if (gamecharacter.get(i).getPriority() == num){
                queue.dequeue();
                gamecharacter.remove(i);
            }
        }
    }



    //这里实现在地皮上增加房产
    //在这里实现将房产添加到地皮中house的集合上
    //负责人：麦雯雅
    public static void addHouse(ground ground, house house){

    }

    //这里实现资金缴纳，交易行为
    //扣除玩家的钱
    //负责人：麦雯雅
    public static void buyAction(int price,int characterMoney){

    }

    //这里实现增加地皮的价值，在建立相应的房产后是地皮的价值增加
    //将房产的价格增加到地皮的价格上
    //负责人：麦雯雅
    public static void addGroundvalue(ground ground,house house){

    }

    //实现休眠操作
    //改变角色的状态，使得角色的状态为休眠
    //负责人：麦雯雅
    public static void characterSleep(character character){

    }

}
